package com.ai.zuochengyun.phase01.class01;

import java.util.Comparator;

public class Code16_Customer {
    public int id;

    /**
     * 购买数
     */
    public int buy;

    /**
     * 进入区域的时间
     */
    public long enterTime;

    public Code16_Customer(int id, int quantity, long enterTime) {
        this.id = id;
        this.buy = quantity;
        this.enterTime = enterTime;
    }

    /**
     * 候选区排序规则
     */
    public static class CandidateComparator implements Comparator<Code16_Customer> {

        @Override
        public int compare(Code16_Customer o1, Code16_Customer o2) {
            // 购买越大的放前面，如果购买数相同，谁早谁在前。
            return o1.buy != o2.buy ? o2.buy - o1.buy : (int) (o1.enterTime - o2.enterTime);
        }
    }

    /**
     * 得奖区排序规则，因为要替换前面的元素
     */
    public static class WinnerComparator implements Comparator<Code16_Customer> {

        @Override
        public int compare(Code16_Customer o1, Code16_Customer o2) {
            // 购买越大的放前面，如果购买数相同，
            // 谁后买谁在前，因为前者先买但是目前并未发生新的购买，可能购买力没有后来的强，那么后面在替换的时候，优先替换掉最早购买的
            return o1.buy != o2.buy ? o2.buy - o1.buy : (int) (o2.enterTime - o1.enterTime);
        }
    }
}
